Skip to content

feat: add provider-owned capability contracts#1013

Open
intel352 wants to merge 28 commits into
mainfrom
codex/provider-contracts
Open

feat: add provider-owned capability contracts#1013
intel352 wants to merge 28 commits into
mainfrom
codex/provider-contracts

Conversation

@intel352

Copy link
Copy Markdown
Contributor

Summary

  • add provider-neutral manifest declarations and typed external services for credential issuers, credential resolvers, Kubernetes backends, container registries, and secret stores
  • route wfctl capability selection through declared external services while retaining compatibility fallbacks for the v0.86 migration window
  • replace the provider-named cross-plugin matrix with credential-free contract-consumer selection, bounded sharding, immutable release provenance, and real local loader proof
  • add structural Kubernetes/cloud ownership audits and provider-plugin development/release guidance

Why

Workflow is a framework, but core still owned concrete cloud behavior and its CI named specific provider repositories. This additive release creates the neutral contracts needed to move those lifecycles into canonical plugins before the v0.87 removal release.

Trust-only staging PRs #1011 and #1012 landed first so this PR cannot authorize its own workflow changes.

Public CI boundary

  • GitHub-hosted runners only
  • no cloud credentials or named secrets
  • no OIDC provider authority
  • no self-hosted runners
  • no live provider API or CLI execution
  • consumer compatibility runs released plugin code only in credential-free local loader tests

Validation

  • ./scripts/test-check-public-workflow-policy.sh
  • ./scripts/check-public-workflow-policy.sh
  • actionlint .github/workflows/*.yml
  • shellcheck and bash -n for contract-consumer scripts
  • ./.github/workflows/scripts/test-select-contract-consumers.sh
  • GOWORK=off go test -p=1 ./...
  • GOWORK=off go test -race ./plugin/external/... -count=1
  • GOWORK=off go test -race ./cmd/wfctl -run 'Provider|Credential|Registry|Kubernetes|Secret|Infra|Orphan|Contract' -count=1
  • GOWORK=off go vet -p=1 ./...
  • pinned buf generate with byte-identical generated output
  • git range-diff confirms all 28 reviewed patches are unchanged after rebasing onto ci: stage v0.86 workflow authority #1011/ci: stage v0.86 consumer authority #1012

intel352 added 28 commits July 16, 2026 18:17
Register advertised resolvers with plugin process ownership so reload and shutdown cannot retain stale clients. Preserve compatibility fields and isolate provider requests and errors across the transport boundary.
Roll back server-loaded plugins rejected by the engine and swap prepared resolver registrations under one registry lock.
Treat repeated loads of one installed plugin as generations of a single resolver owner, and bind server plugin managers to engine lifecycle and admin routing.
Stage candidate resolver generations per application, drain in-flight calls before client shutdown, and close engines on every failed activation path.
Publish scoped replacements atomically, bound retirement by context, and defer candidate promotion until engine acceptance.
Copilot AI review requested due to automatic review settings July 16, 2026 22:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants